home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 2 / Apprentice-Release2.iso / Source Code / C / Libraries / stdwin / Ports / x11 / cutbuffer.c < prev    next >
Encoding:
C/C++ Source or Header  |  1990-10-22  |  867 b   |  49 lines  |  [TEXT/????]

  1. /* Cut Buffer Interface */
  2.  
  3. #include "x11.h"
  4.  
  5. void
  6. wsetcutbuffer(ibuffer, data, len)
  7.     int ibuffer;
  8.     char *data;
  9.     int len;
  10. {
  11.     XStoreBuffer(_wd, data, len, ibuffer);
  12. }
  13.  
  14. char *
  15. wgetcutbuffer(ibuffer, len_return)
  16.     int ibuffer;
  17.     int *len_return;
  18. {
  19.     static char *lastdata;
  20.     if (lastdata != NULL)
  21.         free(lastdata);
  22.     lastdata= XFetchBuffer(_wd, len_return, ibuffer);
  23.     if (lastdata != NULL) {
  24.         lastdata= realloc(lastdata, *len_return+1);
  25.         if (lastdata != NULL)
  26.             lastdata[*len_return] = EOS;
  27.     }
  28.     return lastdata;
  29. }
  30.  
  31. void
  32. wrotatecutbuffers(n)
  33.     int n;
  34. {
  35.     static int been_here;
  36.     if (!been_here) {
  37.         /* XRotateBuffers fails if not all 8 buffers have been
  38.            stored into.  Make sure they are all defined. */
  39.         int i;
  40.         for (i = 0; i < 8; i++) {
  41.             int len;
  42.             if (wgetcutbuffer(i, &len) == NULL)
  43.                 wsetcutbuffer(i, "", 0);
  44.         }
  45.         been_here = 1;
  46.     }
  47.     XRotateBuffers(_wd, n);
  48. }
  49.